package mastermind.gui.controls;

import mastermind.img.ImageLoader;

import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.RowData;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;

/**
 * Diese Klasse stellt einen Bewertungspin dar
 */
public class RatePinUI extends Canvas
{
	private Image	_img;

	/**
	 * Die m&ouml;glichen Bewertungspins<br>
	 * Keiner - Richtig (Schwarz) - Falsch (Wei&szlig;)
	 */
	public enum RATE_STATE
	{
		NONE,
		RIGHT,
		WRONG
	}

	/**
	 * Erstellt ein neues RatePinUI Objekt
	 * 
	 * @param parent
	 *            Eltern-Objekt, auf das das RatePinUI Objekt plaziert wird
	 * @param style
	 *            Zus&auml;zliche Style Informationen
	 */
	public RatePinUI(Composite parent, int style)
	{
		super(parent, style);
		this.addPaintListener(new PaintListener() {

			@Override
			public void paintControl(PaintEvent e)
			{
				if (_img != null)
					e.gc.drawImage(_img, 0, 0);
			}
		});
		this.setLayoutData(new RowData(8, 8));

	}

	/**
	 * Setzt den anzuzeigenden Status
	 * 
	 * @param state
	 *            Status der angezeigt werden soll
	 */
	public void setState(RATE_STATE state)
	{
		switch (state)
		{
		case RIGHT:
			setToolTipText("Richtiger Platz");
			break;
		case WRONG:
			setToolTipText("Falscher Platz");
			break;
		case NONE:
			setToolTipText("");
			break;
		}
		_img = ImageLoader.getRate(state);
		this.redraw();
	}

}
